package com.cwnu.sw.cys.core.websocket.domain.vo.resp;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * WSMemberChange类用于表示群组成员变动的信息
 * 它包含了群组ID、用户ID、变动类型、在线状态和最后一次上下线时间等信息
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WSMemberChange {
    // 定义成员变动类型常量
    public static final Integer CHANGE_TYPE_ADD = 1;
    public static final Integer CHANGE_TYPE_REMOVE = 2;

    /**
     * 群组id
     * 用于标识成员变动所属的群组
     */
    @ApiModelProperty("群组id")
    private Long roomId;

    /**
     * 变动uid集合
     * 实际上这个字段表示的是单个用户ID，而非集合
     * 用于标识发生变动的用户
     */
    @ApiModelProperty("变动uid集合")
    private Long uid;

    /**
     * 变动类型
     * 用于标识用户是加入群组还是移除出群组
     * 1加入群组 2移除群组
     */
    @ApiModelProperty("变动类型 1加入群组 2移除群组")
    private Integer changeType;

    /**
     * 在线状态
     * 用于标识用户的在线状态
     * 1在线 2离线
     */
    @ApiModelProperty("在线状态 1在线 2离线")
    private Integer activeStatus;

    /**
     * 最后一次上下线时间
     * 记录用户最后一次上线或下线的时间
     */
    @ApiModelProperty("最后一次上下线时间")
    private Date lastOptTime;
}
